﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace JQuery.WebKit.WebClient
{
    public partial class WebGrid : JPage
    {
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            grid.DataRequesting += new WebKit.WebGrid.WebGridDataRequestEventHandler(grid_DataRequesting);
            grid.DataRequested += new WebKit.WebGrid.WebGridDataRequestedEventHandler(grid_DataRequested);
        }

        void grid_DataRequested(object sender, WebGridDataRequestedEventArgs e)
        {
            //    DataTable dt = new DataTable();
            //    dt.Columns.Add("Key");
            //    dt.Columns.Add("Value");

            //    for (int i = 1; i < 100; i++)
            //    {
            //        DataRow row = dt.NewRow();
            //        row["Key"] = i;
            //        row["Value"] = string.Format("Row {0}", i);
            //        dt.Rows.Add(row);
            //    }
            //    e.DataTable = dt;
        }

        void grid_DataRequesting(object sender, WebGridDataRequestEventArgs e)
        {
            //DataTable dt = new DataTable();
            //dt.Columns.Add("Key");
            //dt.Columns.Add("Value");

            //for (int i = e.NewPageIndex; i < grid.PagerSettings.PageSize; i++)
            //{
            //    DataRow row = dt.NewRow();
            //    row["Key"] = i;
            //    row["Value"] = string.Format("Row {0}", i);
            //    dt.Rows.Add(row);
            //}
            int totalRows = 0;
            grid.DataSource = GetData(grid.PagerSettings.PageSize, e.NewPageIndex, out totalRows);
            e.TotalRows = totalRows;
            grid.DataBind();
        }

        protected virtual DataTable GetData(int pageSize, int startIndex, out int totalRowsCount)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Key");
            dt.Columns.Add("Value");

            for (int i = (startIndex - 1) * pageSize; i < (startIndex - 1) * pageSize + pageSize; i++)
            {
                DataRow row = dt.NewRow();
                row["Key"] = i;
                row["Value"] = string.Format("Row {0}", i);
                dt.Rows.Add(row);
            }
            totalRowsCount = pageSize * 10;
            return dt;
        }

        //protected void EnsureDataBind(int pageIndex, out int totalRows)
        //{
        //    DataTable dt = GetData(CurrentPageSize, pageIndex, out totalRows);

        //    base.DataSource = dt;
        //    base.DataBind();
        //    OnAfterDataBind();
        //}

        protected void Page_Load(object sender, EventArgs e)
        {
            grid.DataBind();
            //if (!Page.IsPostBack)
            //{
            //    Dictionary<int, string> ds = new Dictionary<int, string>();
            //    for (int i = 1; i < 100; i++)
            //    {
            //        ds.Add(i, string.Format("Row {0}", i));
            //    }
            //    grid.DataSource = ds;
            //    grid.DataBind();
            //}
        }
    }
}